QÅFBase Image Decompressor ÇégǧÉRÅ[ÉfÉbÉNÇèëǴNjǵÇΩÅBDZÇÃÉfÉRÉìÉvÉåÉbÉTÇÕîÒìØä˙Ç…é¿çsÇ∑ÇÈïKóvǙdžÇËÅiDrawBand ä÷êîÇÕà¿ëSÇ≈ǻǢåƒÇ—èoǵÇàÍêÿǵNjÇπÇÒÅjÅAImageCodecInitialize ÇÃé¿çséûÇ…ÉTÉuÉRÅ[ÉfÉbÉNã@î\ÇÃÉåÉRÅ[ÉhÇ… canAsync ÉtÉâÉOÇämé¿Ç…ÉZÉbÉgÇ∑ÇÈÇÊǧDžǵNjǵÇΩÅBǵǩǵÅAÉRÅ[ÉfÉbÉNÇÕîÒìØä˙Ç…é¿çsǵǃǢǻǢÇÊǧÇ≈Ç∑ÅBâΩǩǙë´ÇËǻǢÇÃÇ≈ǵÇÂǧǩÅB
AÅF ÉxÅ[ÉXÉRÅ[ÉfÉbÉNÇ…äÓÇ√Ç≠îÒìØä˙ÉRÅ[ÉfÉbÉNÇÕÅAcanAsync ÉtÉâÉOÇÃÉZÉbÉgÇ…â¡Ç¶ÇƒÅAImageCodecQueueStarting Ç®ÇÊÇ— ImageCodecQueueStopping ÉãÅ[É`ÉìÇé¿ëïÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBÉRÅ[ÉfÉbÉNÇ…ÅADZÇÍÇÁÇÃåƒÇ—èoǵÇé¿ëïǵǻǢÇΔÅAÉxÅ[ÉXÉRÅ[ÉfÉbÉNÇÕìØä˙çƒê∂Ç…ñflǡǃǵNjǢNjÇ∑ÅB
DZÇÍÇÁÇÃåƒÇ—èoǵéûÇ…ÉRÅ[ÉfÉbÉNÇ™âΩLJÇ∑ÇÈïKóvǙǻǢèÍçáÇÕÅAíPÇ… noErr ÇñflÇ∑ÇÊǧDžǵNjÇ∑ÅB
ÉäÉXÉg 1 ÇÕÅAÉfÉBÉXÉpÉbÉ`ÉtÉ@ÉCÉãÇê›íËǵÅA2 ǬÇÃÉZÉåÉNÉ^Çé¿ëïÇ∑ÇÈï˚ñ@Çé¶ÇµÇ‹Ç∑ÅB
ÉäÉXÉg 2 ÇÕÅAQueueStarting ÇΔ QueueStopping ÇÃåƒÇ—èoǵéûÇ…ÉRÅ[ÉfÉbÉNÇ™âΩLJÇ∑ÇÈïKóvǙǻǢèÍçáÇ…ÅAComponentDispatchHelper Ç…çÏãΔÇé¿çsÇ≥ÇπÇÈï˚ñ@Çé¶ÇµÇ‹Ç∑ÅB
// MySubCodecDispatch.h
...
ComponentRangeBegin (3)
ComponentCall (Preflight)
ComponentCall (Initialize)
ComponentCall (BeginBand)
ComponentCall (DrawBand)
ComponentCall (EndBand)
ComponentCall (QueueStarting)
ComponentCall (QueueStopping)
ComponentDelegate (DroppingFrame)
ComponentDelegate (ScheduleFrame)
ComponentDelegate (CancelTrigger)
ComponentRangeEnd (3)
...
// MySubCodec.c
...
// ImageCodecQueueStarting
// Base Image Decompressor ÇÕÅAÉLÉÖÅ[DždžÇÈÉtÉåÅ[ÉÄÇêLí∑Ç∑ÇÈëOÇ…ÅA
// ÉCÉÅÅ[ÉWÉfÉRÉìÉvÉåÉbÉTÉRÉìÉ|Å[ÉlÉìÉgÇà ImageCodecQueueStarting
// ä÷êîÇåƒÇ—èoǵNjÇ∑ÅBBase Image Decompressor ÇÕÅAäÑÇËçûÇ›éûÇ…
// ImageCodecQueueStarting ä÷êîÇåƒÇ—èoÇ∑DZÇΔÇÕǻǢÅB
// ÉRÅ[ÉfÉbÉNÇ™îÒìØä˙ÇÃíËä˙êLí∑ÇÉTÉ|Å[ÉgÇ∑ÇÈèÍçáÅADZÇÃÉZÉåÉNÉ^Çé¿ëï
// Ç∑ÇÈïKóvǙdžÇÈÅBDZÇÃÇΔÇ´ÅAÉRÅ[ÉfÉbÉNÇ™âΩLJÇ∑ÇÈïKóvÇ™Ç»ÇØÇÍÇŒÅA
// íPÇ… noErr ÇñflÇ∑ÅB
pascal ComponentResult EI_ImageCodecQueueStarting(EI_Globals glob)
{
#pragma unused(glob)
return noErr;
}
// ImageCodecQueueStopping
// Base Image Decompressor ÇÕÅAImageCodecQueueStopping ä÷êîÇ
// åƒÇ—èoǵÅA ÉLÉÖÅ[DždžÇÈÉtÉåÅ[ÉÄÇ™êLí∑Ç≥ÇÍÇΩDZÇΔÇÉRÅ[ÉfÉbÉNÇ…í ímÇ∑ÇÈÅB
// Image Decompressor ÉRÉìÉ|Å[ÉlÉìÉgÇÕÅAImageCodecQueueStopping ÇÃ
// åƒÇ—èoǵÇèàóùǵÇΩå„ÅAïsóvÇΔǻǡÇΩÉfÅ[É^ç\ë¢ëÃÇÃîjä¸Ç»Ç«ÅAÉtÉåÅ[ÉÄÇÃ
// êLí∑Ç™äÆóπÇ∑ÇÈÇΔÇ´Ç…ïKóvÇ»îCà”ÇÃÉ^ÉXÉNÇé¿çsÇ≈Ç´ÇÈÅB
// ÉRÅ[ÉfÉbÉNÇ™îÒìØä˙ÇÃíËä˙êLí∑ÇÉTÉ|Å[ÉgÇ∑ÇÈèÍçáÅADZÇÃÉZÉåÉNÉ^Çé¿ëïÇ∑ÇÈ
// ïKóvǙdžÇÈÅBDZÇÃÇΔÇ´ÅAÉRÅ[ÉfÉbÉNÇ™âΩLJçÏãΔÇ∑ÇÈïKóvÇ™Ç»ÇØÇÍÇŒÅA
// íPÇ… noErr ÇñflÇ∑ÅB
// Base Image Decompressor ÇÕÅAäÑÇËçûÇ›éûÇ… ImageCodecQueueStopping
// ä÷êîÇåƒÇ—èoÇ∑DZÇΔÇÕǻǢÅB
pascal ComponentResult EI_ImageCodecQueueStopping(EI_Globals glob)
{
#pragma unused(glob)
return noErr;
}
...
|
ÉäÉXÉg 1 QueueStarting ÇΔ QueueStopping ÇÃé¿ëï
|
// ÉRÅ[ÉfÉbÉNÇ™ÅAQueueStarting ÇΔ QueueStopping Ç≈çÏãΔÇçsǧïKóvǙǻǢèÍçáÇÕÅA
// ÉfÉBÉXÉpÉbÉ`ÉÉÇ≈ ComponentNoError ÇégÇ¢ÅAComponentDispatchHelper
// Ç…çÏãΔÇé¿çsÇ≥ÇπÇÈDZÇΔÇ™Ç≈Ç´ÇÈÅBǪǧÇ∑ÇÍÇŒ ComponentDispatchHelper ÇÕÅA
// DZÇà 2 ǬÇÃÉZÉåÉNÉ^DžǬǢǃÇÕÅAbadComponentSelector Ç≈ÇÕÇ»Ç≠
// noErr ÇñflÇ∑ÅB
// MySubCodecDispatch.h
...
ComponentRangeBegin (3)
ComponentCall (Preflight)
ComponentCall (Initialize)
ComponentCall (BeginBand)
ComponentCall (DrawBand)
ComponentCall (EndBand)
ComponentNoError (QueueStarting)
ComponentNoError (QueueStopping)
ComponentDelegate (DroppingFrame)
ComponentDelegate (ScheduleFrame)
ComponentDelegate (CancelTrigger)
ComponentRangeEnd (3)
...
|
ÉäÉXÉg 2 ComponentNoError ÇégÇ¡ÇΩ QueueStarting ÇΔ QueueStopping ÇÃé¿ëï
|
éQçlï∂å£
QuickTime
Codec Components
Base
Image Decompressor Functions
[2002 îN 7 åé 9 ì˙]
|